﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IChessEngine
{
    public interface IChsPosition
    {
        bool AllyKingCheck { get; }
        bool EnemyKingCheck { get; }
        EChsPieceColor ColorToMove { get; }
        bool WhiteCastleQueenSide { get; }
        bool WhiteCastleKingSide { get; }
        bool BlackCastleQueenSide { get; }
        bool BlackCastleKingSide { get; }
        bool PermanentWhiteCastleQueenSide { get; }
        bool PermanentWhiteCastleKingSide { get; }
        bool PermanentBlackCastleQueenSide { get; }
        bool PermanentBlackCastleKingSide { get; }
        IChsBoard GetBoard();
        IChsPosition Execute(IChsMovement movement);
        IChsPiece GetPieceAt(IChsSquare square);
        IChsPiece GetPieceAt(int x, int y);
        bool HasAllyPiece(IChsSquare source);
        bool HasPiece(IChsSquare target);
        bool HasPiece(int x, int y);
        bool HasEnemyPiece(IChsSquare square);
        bool HasEnemyPiece(int x, int y);
        bool IsPromotingMovement(IChsSquare source, IChsSquare target);
    }
}
